package algorithm.leetcode.simple;

/*
 给定一个包含大写字母和小写字母的字符串，找到通过这些字母构造成的最长的回文串。
 */



/**
 * @author jack.wu
 * @version 1.0
 * @date 2020/10/27
 */
public class Question409 {

    public static void main(String[] args) {
        String s = "abccccdd";
        Question409 question = new Question409();
        int count = question.longestPalindrome(s);
        System.out.println(count);
    }

    public int longestPalindrome(String s) {
        int[] count = new int[128];
        for (char c : s.toCharArray()) {
            count[c]++;
        }
        int len = 0;
        for (int j : count) {
            // 比如 j = 5 -> 5 / 2 * 2 = 4
            len += j / 2 * 2;
            if (j % 2 == 1 && len % 2 == 0) {
                // 出现奇数次 同时 之前没统计过
                len++;
            }
        }
        return len;
    }
}
